package com.d16_Socket_Homework.homework4;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class ClientDemo4_TCP {
    public static void main(String[] args) throws IOException {
        // 将键盘录入封装成一个方法
        File file = getFile();
        // 创建客户端Socket对象，指定IP地址和端口号
        Socket socket = new Socket("127.0.0.1", 11111);
        // 读取文件数据
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        // 将数据发送给服务器
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        // 读写
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
            bos.flush(); // 刷新
        }
        // 禁用输出流
        socket.shutdownOutput();
        // 关闭读取文件的流
        bis.close();

        // 根据socket获取输入流，读取服务端的反馈
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        System.out.println(br.readLine());
        // 释放资源
        socket.close();
    }

    // 获取jpg图片文件的方法
    private static File getFile() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个JPG格式图片文件的路径：");
        while (true) {
            File file = new File(sc.nextLine());
            if (!file.exists()) {
                System.out.println("该文件路径不存在，请重新输入：");
            } else if (file.isDirectory()) {
                System.out.println("您输入的是一个文件夹路径，请重新输入：");
            } else if (file.getName().endsWith(".jpg") || file.getName().endsWith(".JPG")) {
                return file;
            } else {
                System.out.println("您输入文件格式有误，请重新输入");
            }
        }
    }
}
